package com.tang.algorithm.recursion;

/**
 * @author tlm
 * @version 1.0
 * @date 2020/4/11 17:19
 * 递归原理：递归是一种解决问题的有效方法，在递归过程中，函数将自身作为子例程调用
 * 反转字符串：
 * 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
 * 不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
 * 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
 */
public class ReverseString {
    public static void main(String[] args) {
        char[] s = {'h','e','l','l','o'};
        helper(0,s);
        System.out.print(s);
    }



    private static void helper(int index, char [] str) {
        if (str == null || index > str.length/2-1) {
            return;
        }
        helper(index + 1, str);
        char a =str[index];
        str[index]=str[str.length-1-index];
        str[str.length-1-index]=a;
    }
}
/*
输出结果：
olleh
 */
